﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Platform.Infrastructure.Utils
{
	[Flags]
	public enum PropertyNameIncludes
	{

		/// <summary>
		/// Retorna somente o nome das propriedades.
		/// </summary>
		/// <exemexample>
		/// Da expressão <code>context => context.Document.Values[field.Name]</code> irá
		/// retornar somente "Document.Values"
		/// </exemexample>
		OnlyProperties = 1,

		/// <summary>
		/// Retorna o nome das propriedades junto com o nome do parâmetro passado pelo contexto
		/// </summary>
		/// <example>
		/// Da expressão <code>context => context.Document.Values[field.Name]</code> irá
		/// retornar somente "context.Document.Values"
		/// </example>
		PropertiesAndInputParameter = 2 | OnlyProperties,

		/// <summary>
		/// Retorna o nome das propriedades junto com a resolução de parâmetros externos.
		/// </summary>
		/// <example>
		/// Da expressão <code>context => context.Document.Values[field.Name]</code> irá
		/// retornar somente "Document.Values["conteúdo de field.Name"]"
		/// </example>
		PropertiesAndExternals = 4 | OnlyProperties,

		/// <summary>
		/// Retorna tudo da expressão
		/// </summary>
		All = OnlyProperties | PropertiesAndInputParameter | PropertiesAndExternals
	}
}
